/**
 * C++ 主要数据类型
 */
#include <iostream>
#include <stdio.h>

using namespace std;
#define sjlx sjlx

int sjlx() {
    //整数类型
    //int:32bit,4Byte,范围：-2(31)~2(31)-1，绝对值在10(9)以内的都可以定义为int类型。输出格式 %d
    int a, b, c = 12;
    printf("c=%d\n", c);
    //long long:64bit,8Byte,范围：-2(64)~2(64)-1，范围超过2147483647即2(32)-1的可定义为long long。输出格式 %ld
    //如果大于2(32)-1，则必须加LL后缀
    long long bignum = 123456789012345LL;
    printf("bignum=%ld\n", bignum);

    //浮点数:输出格式均为 %f
    //float:32bit,1bit是符号位，8位是指数位，23为作为尾数，表示范围-2(128)~2(128),精度只有6~7位
    float f1 = 3.14;
    //double:64bit,1bit是符号位，11位是指数位，52为作为尾数，表示范围-2(1024)~2(1024),精度只有15~16位
    double db = 3.1415926536;
    printf("f1=%f,db=%f\n", f1, db);

    //字符型:输出格式 %c
    //char:ascii范围0~127，小写字母大于大写字母，单引号
    char c1 = 'a', c2 = 'A', c3 = 117;
    printf("%c%c%c\n", c1, c2, c3);
    printf("%c\n\n%c\t%c\n", c1, c2, c3);

    //字符串常量:输出格式 %s
    //C中没有字符串类型，只能用字符数组
    char arr1[20] = "I am a teacher!";
    printf("%s\n", arr1);

    //布尔类型:非零true，零false
    bool flag1 = true;
    bool flag2 = false;
    printf("%d %d\n", flag1, flag2);

    //强制类型转换
    printf("double db=%d\n", (int) db);

    //符号常量和const常量
    //#define sjlx main  注意：末尾不加分号
    //const double pi = 3.14;  注意：末尾加加加加分号

    //运算符：取余，整除，自增，自减，关系，逻辑，条件（三元表达式）

    return 0;
}

